Storage systems, from embedded to datacenter, utilize storage media to store user data written to the system and to retrieve that data on a user's request. Storage systems can be homogeneous, built from the uniform storage media with the same access and/or endurance characteristics, or heterogeneous, comprising multiple media types as distinguished by their latency, throughput, endurance or other performance factors. Media of the same type in such a system are organized in tiers, with each tier characterized by its underlying media type-specific features. The different media characteristics in heterogeneous systems can provide advantages that are leveraged during system operation. For example, in personal computer systems, dynamic random access memory (“DRAM”) provides very quick access but does not retain data once power is removed, whereas a hard disk drive (“HDD”) provides relatively slow access compared to DRAM but retains data once power is removed; many systems will therefore use DRAM as “active memory” to provide for quick data retrieval and storage of frequently used data while the computer is in active use, while data which is less frequently used (and all data to be retained when such systems are shut down) is committed to the HDD. However, because of different access latencies and management requirements can affect pipelining, which is directly tied to speed of operation in many systems, it is typically desired to place data intelligently (i.e., to deliberately select an appropriate “tier” for storing data in a heterogeneous system); for example, data that is mostly read and is not frequently overwritten such as audio files can be placed in relatively slow access memory (such as a HDD or other nonvolatile memory) while data that is frequently overwritten can be placed in DRAM or other fast access volatile memory.
What is needed are techniques for more efficiently managing operation of nonvolatile memory. Still more particularly, what is needed are techniques for more efficiently managing memory in a heterogeneous memory system. The present invention addresses these needs and provides further, related advantages.
The subject matter defined by the enumerated claims may be better understood by referring to the following detailed description, which should be read in conjunction with the accompanying drawings. This description of one or more particular embodiments, set out below to enable one to build and use various implementations of the technology set forth by the claims, is not intended to limit the enumerated claims, but to exemplify their application to certain methods and devices. The description set out below exemplifies methods supporting data migration in a memory system, using metrics individually tracked for data and wear metrics individually tracked for at least some nonvolatile memory locations; such techniques can be practiced in one embodiment by a host, in another embodiment by a memory controller (e.g., within a single drive), and in a third embodiment by a host cooperating with one or more memory controllers. This disclosure also provides improved designs for a memory controller, host, a memory system, a subsystem (such as a drive, e.g., a solid state drive or “SSD”), and numerous data management and migration methods. The disclosed techniques can also be implemented in software or instructions for fabricating an integrated circuit (e.g., a circuit design file or field programmable gate array or “FPGA” configuration) or in the form of data arranged dependent on wear in non-transitory memory. While the specific examples are presented, particularly in the context of flash memory, the principles described herein may also be applied to other methods, devices and systems as well.